package communication.common.business.hole;

import communication.common.business.base.FcrSocketAddress;
import io.vertx.core.datagram.DatagramSocket;
import lombok.Builder;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * 打洞连接记录
 * @author zxl
 */
@Data
public class HoleConnectRecord {

    /**
     * 连接的远端地址
     */
    private FcrSocketAddress remoteSocketAddress;

    /**
     *  使用的本地端口号，以及socket
     */
    private Map<Integer, DatagramSocket> localPortMap = new ConcurrentHashMap<>();


    /**
     * 打洞成功时使用的本地端口号
     */
    private Integer localPortOnSuccess;


    /**
     * 打洞完成的标识
     */
    private AtomicBoolean holeFinish = new AtomicBoolean(false);

    /**
     * 记录的创建时间，用于定时任务处理过期与销毁的动作
     */
    private long createTime;

    /**
     * 超时时间,时间毫秒
     */
    private long timeOut;
}
